## 名称空间和作用域
'''
名称空间
1、内置名称空间
2、全局名称空间
3、局部名称空间
如果在调用一个变量时
定义在局部(函数内) 局部->全局->内置
定义在全局 全局->内置
'''

print(__name__)
# __name__ = "__n1__"

# def func():
#     # print(__name__) # 调用变量时，会先在局部的名称空间查询
#     __name__ = "__n2__"
#     print(__name__)
# func()
print(__name__) # python 的模块名  全局名称空间中在调用变量时，回去查找全局及内置名称空间


name = "小明"
def func2():
    global name # 声明接下来的变量为全局变量
    name = "小花" # 全局名称空间name + 1

func2()
print(name)


import copy
## 深浅拷贝
a = [1,2,3,[4,5,6]] # 一个大列表中嵌套了小列表
b = a
c = a.copy() # 浅拷贝
d = copy.deepcopy(a)
print(a,b,c)
print(id(a),id(b),id(c))
a.insert(0,0)
print('--------------------------')
print(a,b,c)
print(id(a),id(b),id(c))
print(a[-1],b[-1],c[-1])
print(id(a[-1]),id(b[-1]),id(c[-1]))
a[-1].append(7)
print('--------------------------')
print(a,b,c,d)
print(id(a),id(b),id(c), id(d))
print(a[-1],b[-1],c[-1], d[-1])
print(id(a[-1]),id(b[-1]),id(c[-1]), id(d[-1]))
